//思路 日常生活 案例 斗地主的卡牌玩法

//买来的一组牌 (自己手动创建一个 自定义类的 数组)

//洗牌  (需要创建一个新的数组 去 存放 打乱的牌组)

//三个人 ，每个人手上的 牌组也 都可以看作一个单独的数组 (因此需要再额外创建三个 独立 的数组)

//每个人 在 抽牌的时候 (怎么把牌放到手中的数组中)？
//因此需要 创建一个数组(简单来说就是二维数组) 来存放 三个人手中的数组(一维数组)

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Cards {

    public static final String[] suits = {"♠","♥","♦","♣"};

    //创建一组牌
    public List<Card> createCards(){
        List<Card> cardList = new ArrayList<>();

        for(int i=0;i < 4;i++){
            for(int j = 1; j <= 13; j++){
                int rank = j;
                String suit = suits[i];
                Card card = new Card(rank,suit);
                cardList.add(card);
            }
        }

        return cardList;
    }


    //洗牌
    public void shuffle(List<Card> cardList){

        Random random = new Random();
        for (int i = cardList.size() - 1; i > 0 ; i--) {
            int cardIndex = random.nextInt(i);
            swap(cardList,cardIndex,i);
        }

    }

    //洗牌所使用的交换方法
    public void swap(List<Card> cardList,int index1, int index2){
        Card tmp = cardList.get(index1);
        cardList.set(index1,cardList.get(index2));
        cardList.set(index2,tmp);
    }

    //抓牌
    //三个人轮流一人五张牌
    public void drawCard(List<Card> cardList){

        List<Card> hand1 = new ArrayList<>();
        List<Card> hand2 = new ArrayList<>();
        List<Card> hand3 = new ArrayList<>();

        List<List<Card>> handList = new ArrayList<>();
        //此时已经创建好 handList 但其中是没有值的

        handList.add(hand1);
        handList.add(hand2);
        handList.add(hand3);

        for (int i = 0; i < 5; i++) {

            for (int j = 0; j < 3; j++) {
                Card card = cardList.remove(0);

                //相同表示，不同写法
                //1.
                //handList.get(j).add(card);

                //2.
                List<Card> tmpHand = handList.get(j);
                tmpHand.add(card);
            }
        }

        System.out.println("第一个人抓的牌" + hand1);
        System.out.println("第二个人抓的牌" + hand2);
        System.out.println("第三个人抓的牌" + hand3);
    }


}
